package java学习.第06章_面向对象编程_基础;

/**
 * ClassName: D4_方法之递归
 * Package: java学习.第06章_面向对象编程_基础
 * Description:
 *
 * @Author 张蛟龙
 * @Create 2023/3/5 14:06
 * @Version 1.0
 */
public class D4_方法之递归 {
    public static void main(String[] args) {
        /**
         * 递归  方法自己调用自己 就叫递归
         * 如果是死递归  就会出现栈溢出
         *
         * 递归调用会占用大量的系统堆栈，内存耗用多，
         *      在递归调用层次多时速度要比循环慢的多，所以在使用递归时要慎重。
         *
         * 在要求高性能的情况下尽量避免使用递归，递归调用既花时间又耗内存。
         *      考虑使用循环迭代
         *
         * 汉诺塔 问题
         * 走楼梯 问题
         * 兔子  问题
         * 都用到了递归
         */
        //
        D4_方法之递归 d = new D4_方法之递归();
//        d.ms();//java.lang.StackOverflowError
        System.out.println(d.sum(100));
    }


    public int sum(int k){ //递归
        if(k<=0){
            return 0;
        }
        return k + sum(k-1);
    }

    public void ms(){
        System.out.println("递归中");
        this.ms();
    }
}
